package JVM.第03篇_运行时内存篇;

/**
 * Full GC触发机制:
 * 触发Full GC执行的情况有如下五种:
 * (1)调用System.gc()时，系统建议执行Fu1l GC，但是不必然执行
 * (2)老年代空间不足
 * (3)方法区空间不足
 * (4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存
 * (5)由Eden区、survivor space0 (From Space) 区向survivor space1 (To Space)
 * 区复制时，对象大小大于To Space可用内存，则把该对象转存到老年代，且老年代的可用内
 * 存小于该对象大小
 *
 * 说明: full gc是开发或调优中尽量要避免的。这样暂时时间会短一些。
 *
 * 在默认情况下，通过System.gc( )或者Runtime.getRuntime().gc()的调用，
 * 会显式触发Full GC,同时对老年代和新生代进行回收，尝试释放被丢弃对象占用的内存。
 * ●然而System.gc()调用附带一个免责声明，无法保证对垃圾收集器的调用。
 * ●JVM实现者可以通过System.gc()调用来决定JVM的GC行为。
 * 而一般情况下，垃圾回收应该是自动进行的，无须手动触发，否则就太过于麻烦了。
 * 在一些特殊情况下，如我们正在编写一个性能基准，我们可以在运行之间调用System.gc()。
 */
public class F0_详谈GC {

}
